<?php



namespace app\api\controller;;

use app\api\service\ApiPayment;
use app\common\controller\BaseApi;
use app\common\library\exception\ForbiddenException;
use app\common\library\exception\OrderException;
use app\common\model\Orders;
use think\Log;

class Notify extends BaseApi
{

    /**
     * 个人收款配置 【等待开发】
     *
     *
     */
    public function person($channel = 'wxpay'){

        $apiurl = $this->request->request("apiurl");
        $sign = $this->request->request("sign");

        //验证签名
        if ($sign != md5(md5($apiurl))) {
            $this->result("签名密钥不正确");
        }
        $this->result("配置成功");
        echo $channel;
    }

    /**
     * 同步回调 【不做数据处理 获取商户回调地址返回就行了】
     *
     *
     * @param string $channel
     *
     */
    public function callback($channel = 'wxpay'){

        Log::write("Notify Callback Request:{$channel}" . var_export($_POST, true) . var_export($_GET, true) . file_get_contents("php://input") );

        //默认跳转
        $result['return_url'] = "";
        //支付分发
        $result = ApiPayment::$channel()->callback();

        $this->redirect($result['return_url']);
    }

    /**
     * 统一异步通知
     *
     *
     * @param string $channel
     *
     */
    public function notify($channel = 'wxpay'){

        Log::write("Notify Callback Request:{$channel}" . var_export($_POST, true) . var_export($_GET, true) . file_get_contents("php://input") );

         //验证签名拿到订单信息
        $channelInstance = ApiPayment::$channel();
        $result = $channelInstance->notify();

        if ($this->logicNotify->handle($result) ) {
            echo $channelInstance->callbackSuccessResponse();
        }

    }

    // public function callbackFuiou()
    // {
    //     $amt = $this->request->param('amt');
    //     $uid = $this->request->param('uid');


    //     $this->logicBalanceChange->creatBalanceChange($uid, $amt / 100,'充值', 'enable', false);

    //     //根据fy_ssn获取订单信息, 没有则添加添加订单并充值

    // }

    //提现异步回调
    //orderno 商户请求流水 c(10,30) 否 如果商户没传则为空字符串
    //merdt 请求日期 c(8) 否 交易日期
    //fuorderno 富友流水 c(10,30) 否 富友生成的交易流水
    //accntno 账号 c(8,28) 否 银行卡号
    //accntnm 账户名称 c(1,30) 否 银行卡持卡人姓名
    //bankno 总行代码 c(4) 否 参见总行代码表
    //amt 金额 n(1,12) 否 单位：分
    //state 状态 c(2) 否 参见交易状态码说明，1 为付款成功
    //result 交易结果 c(1,8) 否
    //reason 结果原因 c(1,1024) 是
    //mac 校验值 否 商户号|富友分配给商户的密钥|商户请
    //求流水|原请求日期|账号|退票金额，用
    //竖线拼接后用 MD5 散列后的
    //32 进制文本
    //Md5(merid+”|”+pwd+”|”+orderno+”|”+m
    //erdt+”|”+accntno+”|”amt”)
    public function callbackWithdraw()
    {
        //根据orderno获取order信息

        //order状态为待支付则更新订单状态

        //result为成功则更新冻结余额和可用余额

        //result为失败则释放冻结余额并增加可用余额
//        file_put_contents(RUNTIME_PATH . '/call.log', var_export($_POST, true), FILE_APPEND);
        echo $this->logicBalanceCash->finishOrder($this->request->param()['orderno']) ? '1' : '0';
    }

    /**
     * 代付订单任务
     */
    public function task()
    {
        $this->logicNotify->autoCallbackOrders();
        return;

        //调用渠道接口代付
        $this->logicBalanceCash->checkApproveOrderTask();

        //轮训Fastpay订单状态
        $this->logicBalanceCash->checkFastPayAppliyOrderTask();
    }

}